package com.hhc.service;

import com.hhc.dto.CourseDTO;
import com.hhc.query.UserQuery;
import com.hhc.utils.RestResult;
import java.util.List;
import com.hhc.dto.CourseQuery;

/**
 * <p>
 *   课程信息业务逻辑服务接口
 * </p>
 * @author pc
 */
public interface CourseService {

    /**
     * 查询课程列表
     *
     * @param query 查询参数
     * @return RestResult
     */
    RestResult<Object> list(CourseQuery query);

    /**
     * 新增课程信息
     * @param courseDTO 课程信息DTO
     * @return RestResult结果
     */
    RestResult addCourse(CourseDTO courseDTO);

    /**
     * 修改课程信息
     * @param courseDTO 课程信息DTO
     * @return RestResult结果
     */
    RestResult updateCourse(CourseDTO courseDTO);

    /**
     * 删除课程信息
     * @param courseId 课程ID
     * @return RestResult结果
     */
    RestResult deleteCourse(Long courseId);

    /**
     * 更改课程状态
     * @param courseId 课程ID
     * @param status 课程状态
     * @return RestResult结果
     */
    RestResult changeCourseStatus(Long courseId, Integer status);

    RestResult<List<CourseDTO>> getAvailableCourseList(CourseQuery query);

    RestResult<String> enrollCourse(Long courseId);

    RestResult<List<CourseDTO>> getEnrolledCourseList(CourseQuery query);

    RestResult<String> withdrawCourse(Long courseId);
}